function verificarSensoresYNotificar() {
  const hojaDatos = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Últimos Valores");
  const hojaUsuarios = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("datos usuarios");
  
  const datosValores = hojaDatos.getDataRange().getValues();
  const datosUsuarios = hojaUsuarios.getDataRange().getValues();
  
  // Mapear sensores a correos y seudónimos
  const sensoresPorCorreo = {};
  for (let i = 1; i < datosUsuarios.length; i++) {
    const nombreSensor = datosUsuarios[i][0];
    const seudonimo = datosUsuarios[i][1];
    const correo = datosUsuarios[i][2];
    
    if (nombreSensor && correo) {
      sensoresPorCorreo[nombreSensor] = {
        correo: correo,
        seudonimo: seudonimo || nombreSensor
      };
    }
  }

  const ahora = new Date();
  const alertasPorCorreo = {};

  for (let i = 1; i < datosValores.length; i++) {
    const nombreSensor = datosValores[i][0];
    const fechaYHora = new Date(datosValores[i][1]);

    if (nombreSensor in sensoresPorCorreo) {
      const diferenciaHoras = (ahora - fechaYHora) / (1000 * 60 * 60);

      if (diferenciaHoras > 6) {
        const { correo, seudonimo } = sensoresPorCorreo[nombreSensor];
        const mensaje = `- ${seudonimo} (último dato: ${fechaYHora.toLocaleString('es-ES')})`;
        
        if (!alertasPorCorreo[correo]) {
          alertasPorCorreo[correo] = [];
        }
        alertasPorCorreo[correo].push(mensaje);
      }
    }
  }

  // Enviar un solo correo por usuario
  for (const correo in alertasPorCorreo) {
    const listaSensores = alertasPorCorreo[correo].join('\n');
    const asunto = `Alerta: Sensores sin datos recientes`;
    const mensaje = `
Hola,

Los siguientes sensores no han enviado datos en más de 6 horas:

${listaSensores}

Por favor, verifica el estado de los sensores.

Saludos,
Sistema de Monitoreo Automático de los pilotos de CICYTEX para TECH4E.
    `.trim();

    GmailApp.sendEmail(correo, asunto, mensaje);
  }
}